home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 4 / QRZ Ham Radio Callsign Database - Volume 4.iso / files / tcpip / amiga / asrc29p.lha / mkdep.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-29  |  1.7 KB  |  86 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #ifdef    AMIGA
  6. #define    OBJ_EXT "o"
  7. #else
  8. #define    OBJ_EXT    ".obj"
  9. #endif
  10.  
  11. char *inclist[40];
  12. int maxinc = 0;
  13.  
  14. char include[] = "#include";
  15.  
  16. main(int argc,char *argv[])
  17. {
  18.     int i, j, linelen;
  19.     FILE *fp;
  20.     static char filename[512], buf[512], incfile[512];
  21.     char *cp,*cp1;
  22.  
  23.     inclist[maxinc++] = "";
  24.  
  25.     for(i=1;i<argc;i++){
  26.         if (argv[i][0] == '-') {
  27.             if (argv[i][1] == 'i') {
  28.                 char *p = &argv[i][2];
  29.                 int len = strlen(p);
  30.  
  31.                 inclist[maxinc] = malloc(len + 5);
  32.                 strcpy(inclist[maxinc], p);
  33.                 if (p[len-1] != ':' && p[len-1] != '/')
  34.                     strcat(inclist[maxinc], "/");
  35.                 ++maxinc;
  36.             }
  37.             continue;
  38.         }
  39.         strcpy(filename,argv[i]);
  40.         if((cp = strchr(filename,'.')) == NULL)
  41.             continue;
  42.  
  43.         *cp = '\0';
  44.         printf("%s.%s: %s",filename,OBJ_EXT,argv[i]);
  45.         linelen = strlen(filename) + strlen(OBJ_EXT)
  46.                         + strlen(argv[i]) + 2;
  47.         fp = fopen(argv[i],"r");
  48.         while(fgets(buf,512,fp) != NULL){
  49.             if(strncmp(buf,include,sizeof(include)-1) != 0)
  50.                 continue;
  51.             if((cp = strchr(buf,'\"')) == NULL)
  52.                 continue;
  53.             cp++;
  54.             if((cp1 = strchr(cp,'\"')) == NULL)
  55.                 continue;
  56.             *cp1 = '\0';
  57.             stccpy(incfile, cp, sizeof(incfile));
  58.             for (j = 0; j < maxinc; ) {
  59.                 strcpy(incfile, inclist[j]);
  60.                 strcat(incfile, cp);
  61.                 if (access(incfile, 4) == 0)
  62.                     break;
  63.                 ++j;
  64.             }
  65.             if (j >= maxinc) {
  66.                 fprintf(stderr, "Can't find %s for module %s\n",
  67.                     cp, argv[i]);
  68.                 continue;
  69.             }
  70.  
  71.             if (linelen > 72) {
  72.                 printf("\n%s.%s: ",filename,OBJ_EXT,argv[i]);
  73.                 linelen = strlen(filename) + strlen(OBJ_EXT)
  74.                         + 2;
  75.             } else
  76.                 putchar(' ');
  77.  
  78.             linelen += strlen(incfile);
  79.             printf("%s", incfile);
  80.         }
  81.         putchar('\n');
  82.         fclose(fp);
  83.     }
  84.     return 0;
  85. }
  86.